For the past several decades, computers have become increasingly connected. Originally, computers were stand-alone devices, each typically designed and programmed for a specific task. Soon however, the advantages of combining computers into networks became apparent. Networks of computers were able to share resources such as printers and memory and eventually even able to share, or distribute, processing tasks. For example, a search of a large database can often be broken into multiple, mutually exclusive tasks by assigning different processors and/or computers to search different segments of the database.
As computers have become increasingly interconnected, techniques have been developed to enable multiple computers to work together. One such development is Java, a high-level programming language originally developed by Sun Microsystems, Inc. of Mountain View, Calif. Java enables programmers to develop code that is platform independent. Simply stated, code written in the Java programming language is converted, or “interpreted,” into actual computer instructions corresponding to a particular computer by a Java Virtual Machine (JVM) that executes on the computer. In other words, by installing a JVM that corresponds to particular computer hardware and the associated operating system, a programmer can write code without regard to the particular hardware and operating system.
In addition to the increased connectivity of traditional computers, many devices that incorporate computing components have also become both inter-connected and Java-enabled. Examples include Internet, or “web,” telephones, cable boxes and televisions and application clients and servers. To facilitate the management of such Java-enable resources, Java Management Extensions (JMX) has been developed. JMX is a standard for managing and monitoring devices, applications and services in a Java environment. JMX defines a management architecture, design patterns, application programming interfaces (APIs), and services for building web-based, distributes, dynamic and modular solutions to manage Java resources.
JMX provides for the creation and implementation of Java managed beans, or “Mbeans,” which are programming objects that represent objects to be managed. Each Mbean has a management interface that enables a user or program to monitor, manage and be notified of changes to particular configuration parameters of a corresponding resource. For example, an Mbean representing an application may include attributes and methods corresponding to the application's cache size. In this example, reading a “cacheSize” attribute would return the application's cache size and writing a “cacheSize” attribute would update the size of the application's cache, thus changing the application's configuration.
Although the JMX specification has been updated to include invocation between client and server in a distributed environment, the specification still does not address any type of load balancing or contingencies in the event an Mbean fails to execute. What are needed are techniques to address Mbean load balancing and failover.